//定义store
import { defineStore } from "pinia";
import { ref } from 'vue'

/*
    defineStore参数描述：
        第一个参数：给状态起名，具有唯一性
        第二个参数：函数，可以把定义该状态中拥有的内容

    defineStore返回值描述：
        返回的是一个函数，将来可以调用该函数，得到第二个参数中返回的内容
*/

export const useTokenStore = defineStore('token', () => {
    //定义响应式token变量
    const token = ref('');

    //定义一个函数修改token的值
    const setToken = (newToken) => {
        token.value = newToken;
    }

    //定义一个函数移除token的值
    const removeToken = () => {
        token.value = '';
    }

    /**
 * 返回一个对象，用于管理token相关的操作
 * 
 * @return {Object} 包含token属性和相关方法的对象
 *         - token: 当前的token值
 *         - setToken: 设置token值的方法
 *         - temoveToken: 移除token的方法（注意：方法名可能有误，应为removeToken）
 */
    return {
        token, // 当前的token值
        setToken, // 设置token值的方法
        removeToken // 移除token的方法（注意：方法名可能有误，应为removeToken）
    }
},{
    //开启持久🌹存储
    persist: true
})

// export const useTokenStore = defineStore('token', {
//     state: () => ({
//         token: localStorage.getItem('token') || null
//     }),
//     actions: {
//         setToken(token) {
//             this.token = token;
//             localStorage.setItem('token', token);
//         },
//         removeToken() {
//             this.token = null;
//             localStorage.removeItem('token');
//         }
//     }
// });